--[[--
- @Copyright (C), 2016-, sixiong.
- @Name cookie.lua
- @Author sixiong
- @Version 1.0
- @Date: 2016年6月11日下午22:06:41
- @Description 设置cookie
- @Class
- @Function List
- @History <author> <time> <version > <desc>
            sixiong 2016年6月11日下午22:06:41  1.0  第一次建立该文件
--]] 
cookie = cookie or {}
 
--[[
- @desc  设置cookie
- @param string  key     cookie键
- @param string  value   cookie值
- @param string  expire  过期时间
- @param string  path    路径
- @param string  domain  域名
- return bool
--]]
function cookie.set(key, value, expire, path, domain)
    if  key == nil or key == false then
        return false;
    end

    if not expire then 
       expire = 3600;
    end
    
	local s =  key .. '=' .. value .. ';';
	if  expire > 0  then
		s = s .. 'expires=' .. ngx.cookie_time(os.time() + expire) .. ';';
	else
	    s = s .. 'expires=' .. ngx.cookie_time(os.time() -  3600) .. ';'; 
	end

	if path then
		s = s .. 'path=' .. path .. ';';
	else
	    s = s .. 'path=/;';
	end 
	
    if domain then
		s = s .. 'domain=' .. domain .. ';'; 
	else
	    s = s .. 'domain=' .. ngx.var.server_name .. ';';
	end
 
	ngx.header['Set-Cookie'] = s;
	cookie.parsed[key] = value;  
	return true;
end


--[[
- @desc  取cookie
- @param string  key     cookie键
- return bool
--]]
function cookie.get(key)
	return cookie.parsed[key];
end


--[[
- @desc   删除单个cookie
- @param string  key     cookie键
- return bool
--]]
function cookie.del(key)   
      ngx.header['Set-Cookie'] = key .. '="";expires=' .. ngx.cookie_time(os.time() - 1) .. ';';
      return true;
end
 
 
--[[
- @desc   清除cookie 
- return bool
--]]
function cookie.clear()
	for k, v in pairs(cookie.parsed) do
		cookie.set(k, '', -1);
	end
	cookie.parsed = {};
end
 
 
--[[
- @desc --打开cookie
- return bool
--]]
function cookie.open()
	 local t = {};
	 local finder = split(ngx.var.http_cookie or '', ';');
	 for _, p in ipairs(finder) do
		 local _1, _2, k, v = string.find(p, "([%w_]+)=(.+)");
	 	 if k and v then t[k] = v end;
 	 end
 	  
      cookie.parsed = t;
      return nil;
end 
return cookie; 
